package com.yixiu.modules.db.druid;


import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;

import javax.sql.DataSource;

/**
 * druid多数据源的配置类
 *必须先通过配置类，读取配置文件，向bean容器添加数据源bean
 *然后才能在其他地方使用数据源
 * 参考：https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
 */
@Configuration
// @Profile 注解说明这个类只会读取 名字中带有"multi-datasource"的资源文件
// @ActiveProfiles("multi-datasource") 注解说明激活 名字中带有"multi-datasource"的资源文件
// 这两个要搭配在一起使用。也可以通过在配置文件中指定spring.profiles.active来激活文件。
@Profile("multi-datasource")
public class MultiDataSourceConfig {
    @Primary  // @Primary注解说明，有多个DataSource类型的bean时，以这个bean为主
    @Bean(initMethod = "init")
    @ConfigurationProperties("spring.datasource.druid.one") // @ConfigurationProperties 这个注解指定了数据源的前缀名
    public DataSource dataSourceOne(){
        return DruidDataSourceBuilder.create().build();
    }

    @Bean(initMethod = "init")
    @ConfigurationProperties("spring.datasource.druid.two")
    public DataSource dataSourceTwo(){
        return DruidDataSourceBuilder.create().build();
    }
}
